1. Technical Field
The present invention generally relates to computer network traffic, and in particular to network traffic shaping. Still more particularly, the present invention relates to traffic shaping of synchronous requests and responses.
2. Description of the Related Art
Computer networks are extensively utilized to exchange information in professional, personal, public, and private settings. Networks assist in obtaining and transmitting data locally and globally via devices that send and/or receive data over communications media. A large amount of information is exchanged daily throughout network systems around the world. As network managers strive to improve the Quality of Service (QoS) of networks by reducing dropped data, delays, out-of order delivery, and errors, network traffic congestion slows progress. In an attempt to control network traffic, minimize network congestion, and reduce failed transmission attempts (time-outs), traffic shaping is utilized. Traffic shaping optimizes performance of network bandwidth by controlling the volume of traffic being sent into a network and out from a network. Information is sent in segments via packets that contain the destination address in addition to the transmitted data.
Traditional traffic shaping can be implemented by utilizing queues to store packets, manipulating Transmission Control Protocol (TCP) windows, or silently dropping packets. Increased bandwidth consumption and higher demands on network QoS is an indication that traditional traffic shaping techniques may not be sufficient. While current methods for traffic shaping have proven to be effective, there are many disadvantages associated with existing traffic shaping techniques, which often result in less than ideal network data transmission.
Traffic shaping is typically implemented on an edge router or core router and provides a mechanism to control the amount, volume, and rate of data transmission into the network. The predominant methods for traffic shaping include a “leaky bucket” method and a “token bucket” method. The leaky bucket implementation is also utilized to control the rate at which data is sent into the network and provides a mechanism by which surges in data request can be shaped into a steady data stream. The leaky bucket implementation is typically employed for shaping traffic into flows with a fixed rate of admission into the network and is generally ineffective in providing a mechanism for shaping traffic into flows with variable rates of admission.
There are multiple problems associated with traditional methods of network traffic shaping. First, before selected for processing, data packets may be placed in queue. Queues store the packets until the operating system selects the queue and packet to process. A queue with high priority is always processed prior to a queue of lower priority. Therefore time sensitive information located in a low priority queue may be processed subsequent to information located in a higher priority queue.
Traditional traffic shaping methods also include adjusting the TCP window to control the flow of data over the network connection. Reducing the TCP window forces the transmitting device to send less data. Increasing the size of the TCP window allows more data to flow from the transmitting device. Unfortunately, changes in the TCP window may result in undesirable consequences. Network devices are often instructed to reduce or increase the size of the TCP window during heavy traffic. If the change is not performed immediately, then congestion occurs, and the delay may result in a halt in data transmission or dropped packets, forcing the client (e.g., an executing application) of the transmitting device to retransmit the data.
Currently, traffic shaping only operates by manipulating traffic at the packet level. Manipulating traffic at the packet level causes time-outs and loss of information. Packets may be dropped before, after, and during periods of high data transmission. Methods are in place to resolve network traffic problems by temporarily slowing transmission of packets, reducing rates of transmission, as well as selecting predetermined packets for transmission. None of these methods have proven to be ideal.